const app = getApp();

Page({

    /**
     * 页面数据
     */
    data: {

        // 日期
        date: '',

        // 时间
        time: 0,
        time_string: '',
        time_option: [{
            id: 1,
            name: '上午'
        }, {
            id: 2,
            name: '下午'
        }],

        // 类型
        type: 0,
        type_string: '',
        type_option: [{
            id: 1,
            name: '单次预约'
        }, {
            id: 2,
            name: '长期预约'
        }],

        // 频率
        rate: 0,
        rate_option: [{
            id: 1,
            name: '按选定的日期每月一次'
        }, {
            id: 2,
            name: '按选定的日期每周一次'
        }, {
            id: 3,
            name: '按选定的日期每天一次'
        }],

        // 地址
        address: 0,
        address_string: '',
        address_option: null,

        // 备注
        remark: ''
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

        // 验证登录状态
        app.verifyLogin();

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {

        // 更新地址列表
        app.execute(function () {
            let page = app.getPage();
            wx.showLoading({
                title: '更新地址...',
            });
            wx.request({
                url: app.data.service_url + 'recycle/get_address',
                header: {
                    'Client-Token': app.data.client_token
                },
                method: 'GET',
                success: function(response) {
                    wx.hideLoading();
                    if (200 === response.statusCode) {
                        let change = {
                            address_option: response.data.data.address_option
                        };
                        page.setData(change);
                    } else {
                        wx.showToast({
                            title: '更新地址列表失败',
                            icon: 'none'
                        });
                        page.setData({
                            address_option: []
                        });
                    };
                },
                fail: function() {
                    wx.hideLoading();
                    wx.showToast({
                        title: '连接远程服务失败',
                        icon: 'none'
                    });
                    page.setData({
                        address_option: []
                    });
                }
            })
        });

    },

    /**
     * 自定义函数--触摸选择器
     */
    tapSelector: function(e) {
        let current = parseInt(e.target.dataset.value);
        this.setData({
            content_current: current
        });
    },

    /**
     * 自定义函数--更改内容
     */
    changeContent: function(e) {
        this.setData({
            content_current: e.detail.current
        });
    },

    /**
     * 自定义函数--更改输入内容
     */
    changeInput: function(e) {
        let change = new Object();
        change[e.target.dataset.name] = e.detail.value.replace(/[\n\r]/g, '');
        this.setData(change);
    },

    /**
     * 自定义函数--更改选择器
     */
    changePicker: function(e) {
        let option = this.data[e.target.dataset.name + '_option'][Number(e.detail.value)];
        let change = new Object();
        change[e.target.dataset.name] = option.id;
        change[e.target.dataset.name + '_string'] = option.name;
        this.setData(change);
    },

    /**
     * 自定义函数--提交资料
     */
    submit: function(e) {

        let data = {
            type: this.data.type,
            address: this.data.address,
            date: this.data.date,
            time: this.data.time,
            rate: this.data.rate,
            remark: this.data.remark,
        };

        if (0 === data.type) {
            wx.showToast({
                title: '请选择预约类型',
                icon: 'none'
            });
            return;
        };
        if (0 === data.address) {
            wx.showToast({
                title: '请选择所在地址',
                icon: 'none'
            });
            return;
        };
        if (0 === data.date.length) {
            wx.showToast({
                title: '请选择日期',
                icon: 'none'
            });
            return;
        };
        if (0 === data.time) {
            wx.showToast({
                title: '请选择时间',
                icon: 'none'
            });
            return;
        };
        if (0 === data.time.length) {
            wx.showToast({
                title: '请选择时间',
                icon: 'none'
            });
            return;
        };

        // 长期预约
        if (2 === data.type) {
            if (0 === data.rate) {
                wx.showToast({
                    title: '请选择频率',
                    icon: 'none'
                });
                return;
            };
        };

        wx.showLoading({
            title: '处理中...'
        });
        wx.request({
            url: app.data.service_url + 'recycle_order/appoint',
            header: {
                'Client-Token': app.data.client_token
            },
            data: data,
            method: 'POST',
            success: function(response) {
                wx.hideLoading();
                if (200 === response.statusCode) {
                    if (0 === response.data.errno) {
                        wx.showToast({
                            title: '操作成功',
                            mask: true,
                        });
                        setTimeout(function() {
                            wx.navigateBack({
                                delta: 1
                            })
                        }, 1500);
                    } else {
                        wx.showToast({
                            title: response.data.message,
                            icon: 'none'
                        });
                    };
                } else {
                    wx.hideLoading();
                    wx.showToast({
                        title: '远程服务返回错误',
                        icon: 'none'
                    });
                };
            },
            fail: function() {
                wx.hideToast();
                wx.showToast({
                    title: '连接远程服务失败',
                    icon: 'none'
                });
            }
        });
    }

});